<template>
   <div>
      <div class="tc-upload-list" v-for="item in uploadList">
          <template v-if="item.status === 'finished'">
              <img :src="item.response.data.url">
              <div class="tc-upload-list-cover">
                  <Icon type="ios-eye-outline" @click.native="handleView(item.response.data.url)"></Icon>
                  <Icon type="ios-trash-outline" @click.native="handleRemove(item)"></Icon>
              </div>
          </template>
          <template v-else>
              <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress>
          </template>
      </div>

       <Upload
                 ref="upload"
                 :show-upload-list="false"
                 :on-success="handleSuccess"
                 :format="['jpg','jpeg','png']"
                 :max-size="2048"
                 :on-format-error="handleFormatError"
                 :on-exceeded-size="handleMaxSize"
                 :before-upload="handleBeforeUpload"
                 multiple
                 type="drag"
                 action="/admin/storage/create"
                 v-show="uploadList.length < uploadLength"
                 style="display: inline-block;width:58px;">
             <div style="width: 58px;height:58px;line-height: 58px;">
                 <Icon type="ios-camera" size="20"></Icon>
             </div>
         </Upload>


      <Modal title="图片" v-model="visible">
          <img :src="imgName" v-if="visible" style="width: 100%">
      </Modal>
   </div>



</template>
<script>
    module.exports ={
        props:["uploadLength"],
        data () {
            return {
                imgName: '',
                visible: false,
                uploadLength:2,
                uploadList: []
            }
        },
        methods: {
            handleView (name) {
                this.imgName = name;
                this.visible = true;
            },
            handleRemove (file) {
                this.uploadList.splice(this.uploadList.indexOf(file),1)
                this.emitUpdate();
            },
            handleSuccess (res, file) {


                this.emitUpdate();
            },
            emitUpdate(){
                if (this.uploadLength>1){//返回一个集合
                    let imgs = new Array;
                    this.uploadList.forEach(ul=>imgs.push(ul.response.data.url))
                    console.info(imgs)
                    this.$emit("uploadimg",this.imgs);
                } else{//返回一个图片地址
                    console.info("emitUpdate")
                    let url = this.uploadList.length<1?"":this.uploadList[0].response.data.url;
                    this.$emit("uploadimg",url);
                }
            },
            handleFormatError (file) {
                this.$Notice.warning({
                    title: '文件格式不正确',
                    desc: '上传文件 ' + file.name + ' 格式不挣扎, 请上传 jpg 或者 png.'
                });
            },
            handleMaxSize (file) {
                this.$Notice.warning({
                    title: '超出文件大小限制',
                    desc: '文件  ' + file.name + ' 太大, 不要超过 2M.'
                });
            },
            handleBeforeUpload () {
                const check = this.uploadList.length < this.uploadLength;
                if (!check) {
                    this.$Notice.warning({
                        title: '最多可上传5张图片.'
                    });
                }
                return check;
            }
        },
        mounted () {
            this.uploadList = this.$refs.upload.fileList;

            //todo 初始化图片方法。

        }
    }
</script>
<style>
    .tc-upload-list{
        display: inline-block;
        width: 60px;
        height: 60px;
        text-align: center;
        line-height: 60px;
        border: 1px solid transparent;
        border-radius: 4px;
        overflow: hidden;
        background: #fff;
        position: relative;
        box-shadow: 0 1px 1px rgba(0,0,0,.2);
        margin-right: 4px;
    }
    .tc-upload-list img{
        width: 100%;
        height: 100%;
    }
    .tc-upload-list-cover{
        display: none;
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        background: rgba(0,0,0,.6);
    }
    .tc-upload-list:hover .tc-upload-list-cover{
        display: block;
    }
    .tc-upload-list-cover i{
        color: #fff;
        font-size: 20px;
        cursor: pointer;
        margin: 0 2px;
    }
</style>
